Next: Placing geometry Up: The implementation Previous: The implementation

Creating geometry

We believe gestures can be a natural interface for the fundamentally visual task of creating 3D geometry. The difficulty is choosing the ``right'' gesture for each geometric primitive. In SKETCH, we define ``primary'' gestures for instantiating primitives as sequences of strokes that correspond to important visual features -- generally edges -- in partial drawings of the primitives. (see Table 3 for an overview of all such gestures.) For instance, a drawing of three non-collinear line segments which meet at a point imply a corner, based on our visual understanding of drawings [19]; consequently, we interpret similar gestures composed of three line strokes as a cuboid construction operation.

We also provide alternate construction gestures using non-edge strokes. For example, an object of revolution is sketched via its profile and axis, and cuboids can be created by sketching a single edge and two ``dimensioning segments'' (perpendicular to the edge) that meet at a vertex lying anywhere along this edge. These alternative gestures take their structure from the notions of generative modeling [26].

SKETCH's other primitives -- cones, cylinders, spheres, objects of revolution, prisms, extrusions, ducts and superquadrics -- have their own gestures. For most, SKETCH forces some aspect of the shapes to be axis-aligned, so that the gestures are easier to both draw and recognize. For example, to create a duct, the user strokes a closed freehand curve for its cross section, and another freehand curve for its path of extrusion. However, an arbitrary 3D curve is not uniquely determined by a single 2D projection, so SKETCH's ducts must have extrusion paths that lie on an axis-aligned plane, specified by a third gesture -- an axis-aligned line stroke normal to the plane on which the path of extrusion should be projected.

The small number of primitive objects sometimes requires the user to build up geometry from simpler pieces, and precludes some complex objects -- freeform surfaces and true 3D ducts, for example -- from being made at all. But in exchange for this, we believe that our small set of primitives minimizes cognitive load on the user and makes gesture recognition and disambiguation easier. Future work, including user studies, should explore this tradeoff.

Next: Placing geometry Up: The implementation Previous: The implementation